package com.qijian.plug.capacity.examine;

import com.qijian.plug.AbstractPlug;
import com.qijian.system.service.ISysConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.math.BigDecimal;
import java.util.List;

/**
 * 扣分器
 *
 * @param <T>
 */
@Component
public abstract class ExaminePlugWrapper<T> implements AbstractPlug {


    private ISysConfigService configService;

    @Autowired
    public void setConfigService(ISysConfigService configService) {
        this.configService = configService;
    }


    //扣分上限
    @Deprecated
    private BigDecimal MAX_SCORE;
    //扣分大类
    private String clauseType;
    //扣分小类
    private String clauseName;


    /**
     * 外部调用的入口
     * <p>
     * !!!!!!!!!!!如果要启用事务，需要重写doSomething方法，
     * 然后在doSomething方法加上注解@Transactional
     * 直接在operation方法加事务是无效的
     *
     * @param args 参数
     */

    @Override
    public void doSomething(List<Object> args) {
        if (condition(args))
            operation(args);
    }

    protected boolean condition(List<Object> args) {
        return true;
    }

    /**
     * 满足条件后执行的方法
     *
     * @param args 参数
     */
    protected abstract void operation(List<Object> args);

    //默认提供的扣分工单保存方法

    //每一项的分值占比总分
    @Deprecated
    protected void SET_MAX_SCORE(BigDecimal score) {
        this.MAX_SCORE = score;
    }



    public BigDecimal getMAX_SCORE() {
        return MAX_SCORE;
    }

    public String getClauseType() {
        return clauseType;
    }

    public String getClauseName() {
        return clauseName;
    }



}
